#pragma once
#include<SDL2/SDL_image.h>

#include<string>

#include "label.hpp"
#include "droplist.hpp"
#include "betterimage.hpp"
#include "mfmenu.hpp"
#include "inputbox.hpp"
#include "listview.hpp"
#include "button.hpp"
#include "textbutton.hpp"
#include "canvas.hpp"
#include "checkbox.hpp"
#include "autoplaytext.hpp"
#include "texturebar.hpp"

void CloseWindow(unsigned int id);//强制关闭指定窗口
vector<string*>* GetDirAllFile(const char* path);
//不包括文件夹
vector<string*>* GetDirFile(const char* path);
int MFMain(Uint32 *delta_receiver);
void MFQuit();
void MFInit(int font_size);

/*打包格式：
MFPK+文件夹个数(4)
+文件夹名长度(1)+内容个数(4)+文件夹名+内容(文件名长度(1)+文件名+文件长度(8)+文件内容)
*/
class MFPack{
    class MFDirectory{
        friend class MFPack;
        ~MFDirectory();
        public:
        unordered_map<string,string*> file;
    };

    unordered_map<string,MFDirectory*> dir;
    public:
    MFPack(const char* path);
    ~MFPack();
    MFDirectory* GetDir(const char* name);
    //将指定文件夹得所有数据打包到指定路径(不包含子文件夹) dir必须以/结束
    static void Pack(const char* pack_path,initializer_list<const char*> dirs);
};